home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Dev / Obrn-A_1.6_lib.lha / oberon-a / source3.lha / source / AmigaUtil / IntuiPointer.mod < prev    next >
Text File  |  1995-05-27  |  9KB  |  188 lines

  1. (*---------------------------------------------------------------------------
  2.  :Program.    IntuiPointer.mod
  3.  :Contents.   Prozeduren zum Setzen des Mauszeigers auf 'Busy' (ZZ)
  4.  :Author.     Bernd Preusing
  5.  :Address.    Gerhardstr. 16  D-2200 Elmshorn
  6.  :Phone.      04121/22486
  7.  :Copyright.  Public Domain
  8.  :Language.   Oberon-2
  9.  :Translator. Amiga Oberon 2.42d
  10.  :Translator. Oberon-A 5.13
  11.  :History.    V1.0, 08-Oct-89, Bernd Preusing
  12.  :History.    V1.1, 10-Jan-90, [bne]: original (ZZ).-Image
  13.  :History.    V1.2, 10-Jan-92, Christian Stiens: original OS2.0 BusyPointer
  14.  :History.    V1.3, 06-Oct-92, Christian Stiens: animated busy pointer
  15.  :History.    V1.3 11-Jun-93 [hG] supports 3.0 internal busy pointer
  16.  :History.    V1.4, 23-Jan-95 [fjc] merged Christian's and Hartmut's
  17.  :History.        versions, and added Oberon-A code.
  18.  :History.    V1.5, 27-May-95 [fjc] removed AmigaOberon code.
  19.  :Bugs.       none
  20.  :Remark.     Please, create beautiful pointers for me!
  21. ---------------------------------------------------------------------------*)
  22.  
  23. <*STANDARD-*>
  24.  
  25. MODULE IntuiPointer;
  26.  
  27. IMPORT
  28.   SYS := SYSTEM,
  29.   Kernel,
  30.   e := Exec,
  31.   I := Intuition,
  32.   u := Utility;
  33.  
  34. TYPE Data = ARRAY 36 OF INTEGER; DataPtr = POINTER [2] TO Data;
  35.  
  36. CONST ClockDataStr =
  37.   "\x00\x00\x00\x00"
  38.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  39.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xEC\x3F\xF8\x7F\xDE\x3F\xF8\x7F\xBE"
  40.   "\x7F\xFC\xFF\x7F\x7E\xFC\xFF\xFF\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  41.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  42.   "\x00\x00\x00\x00";
  43.  
  44. TYPE Data2 = ARRAY 16,36 OF INTEGER; Data2Ptr = POINTER [2] TO Data2;
  45.  
  46. CONST AnimClockDataStr =
  47.   "\x00\x00\x00\x00"                                               (* 00 *)
  48.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  49.   "\x07\xC0\x1E\xF8\x1F\xF0\x3E\xFC\x3F\xF8\x7E\xFE\x3F\xF8\x7E\xFE"
  50.   "\x7F\xFC\xFE\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  51.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  52.   "\x00\x00\x00\x00"
  53.   "\x00\x00\x00\x00"                                               (* 01 *)
  54.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  55.   "\x07\xC0\x1F\xB8\x1F\xF0\x3F\xBC\x3F\xF8\x7F\x7E\x3F\xF8\x7F\x7E"
  56.   "\x7F\xFC\xFE\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  57.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  58.   "\x00\x00\x00\x00"
  59.   "\x00\x00\x00\x00"                                               (* 02 *)
  60.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  61.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xEC\x3F\xF8\x7F\xDE\x3F\xF8\x7F\xBE"
  62.   "\x7F\xFC\xFF\x7F\x7E\xFC\xFF\xFF\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  63.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  64.   "\x00\x00\x00\x00"
  65.   "\x00\x00\x00\x00"                                               (* 03 *)
  66.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  67.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xE6"
  68.   "\x7F\xFC\xFF\x9F\x7E\xFC\xFF\x7F\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  69.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  70.   "\x00\x00\x00\x00"
  71.   "\x00\x00\x00\x00"                                               (* 04 *)
  72.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  73.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  74.   "\x7F\xFC\xFF\xFF\x7E\xFC\xFF\x03\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  75.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  76.   "\x00\x00\x00\x00"
  77.   "\x00\x00\x00\x00"                                               (* 05 *)
  78.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  79.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  80.   "\x7F\xFC\xFF\xFF\x7E\xFC\xFF\x7F\x7F\xFC\xFF\x9F\x3F\xF8\x7F\xE6"
  81.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  82.   "\x00\x00\x00\x00"
  83.   "\x00\x00\x00\x00"                                               (* 06 *)
  84.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  85.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  86.   "\x7F\xFC\xFF\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFF\x7F\x3F\xF8\x7F\xBE"
  87.   "\x3F\xF8\x7F\xDE\x1F\xF0\x3F\xEC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  88.   "\x00\x00\x00\x00"
  89.   "\x00\x00\x00\x00"                                               (* 07 *)
  90.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  91.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  92.   "\x7F\xFC\xFF\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFE\xFF\x3F\xF8\x7F\x7E"
  93.   "\x3F\xF8\x7F\x7E\x1F\xF0\x3F\xBC\x07\xC0\x1F\xB8\x00\x00\x07\xE0"
  94.   "\x00\x00\x00\x00"
  95.   "\x00\x00\x00\x00"                                               (* 08 *)
  96.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  97.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  98.   "\x7F\xFC\xFF\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFE\xFF\x3F\xF8\x7E\xFE"
  99.   "\x3F\xF8\x7E\xFE\x1F\xF0\x3E\xFC\x07\xC0\x1E\xF8\x00\x00\x07\xE0"
  100.   "\x00\x00\x00\x00"
  101.   "\x00\x00\x00\x00"                                               (* 09 *)
  102.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  103.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  104.   "\x7F\xFC\xFF\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFE\xFF\x3F\xF8\x7D\xFE"
  105.   "\x3F\xF8\x7D\xFE\x1F\xF0\x3B\xFC\x07\xC0\x1B\xF8\x00\x00\x07\xE0"
  106.   "\x00\x00\x00\x00"
  107.   "\x00\x00\x00\x00"                                               (* 10 *)
  108.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  109.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  110.   "\x7F\xFC\xFF\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFD\xFF\x3F\xF8\x7B\xFE"
  111.   "\x3F\xF8\x77\xFE\x1F\xF0\x2F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  112.   "\x00\x00\x00\x00"
  113.   "\x00\x00\x00\x00"                                               (* 11 *)
  114.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  115.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  116.   "\x7F\xFC\xFF\xFF\x7E\xFC\xFD\xFF\x7F\xFC\xF3\xFF\x3F\xF8\x4F\xFE"
  117.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  118.   "\x00\x00\x00\x00"
  119.   "\x00\x00\x00\x00"                                               (* 12 *)
  120.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  121.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x7F\xFE"
  122.   "\x7F\xFC\xFF\xFF\x7E\xFC\x81\xFF\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  123.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  124.   "\x00\x00\x00\x00"
  125.   "\x00\x00\x00\x00"                                               (* 13 *)
  126.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  127.   "\x07\xC0\x1F\xF8\x1F\xF0\x3F\xFC\x3F\xF8\x7F\xFE\x3F\xF8\x4F\xFE"
  128.   "\x7F\xFC\xF3\xFF\x7E\xFC\xFD\xFF\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  129.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  130.   "\x00\x00\x00\x00"
  131.   "\x00\x00\x00\x00"                                               (* 14 *)
  132.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  133.   "\x07\xC0\x1F\xF8\x1F\xF0\x2F\xFC\x3F\xF8\x77\xFE\x3F\xF8\x7B\xFE"
  134.   "\x7F\xFC\xFD\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  135.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  136.   "\x00\x00\x00\x00"
  137.   "\x00\x00\x00\x00"                                               (* 15 *)
  138.   "\x04\x00\x07\xC0\x00\x00\x07\xC0\x01\x00\x03\x80\x00\x00\x07\xE0"
  139.   "\x07\xC0\x1B\xF8\x1F\xF0\x3B\xFC\x3F\xF8\x7D\xFE\x3F\xF8\x7D\xFE"
  140.   "\x7F\xFC\xFE\xFF\x7E\xFC\xFF\xFF\x7F\xFC\xFF\xFF\x3F\xF8\x7F\xFE"
  141.   "\x3F\xF8\x7F\xFE\x1F\xF0\x3F\xFC\x07\xC0\x1F\xF8\x00\x00\x07\xE0"
  142.   "\x00\x00\x00\x00";
  143.  
  144. VAR
  145.   ClockData : DataPtr;
  146.   AnimClockData : Data2Ptr;
  147.  
  148. (*------------------------------------*)
  149.  
  150. PROCEDURE InitData;
  151.  
  152. BEGIN (* InitData *)
  153.   Kernel.Allocate (ClockData, SIZE (Data), {e.chip});
  154.   SYS.MOVE (SYS.ADR (ClockDataStr), ClockData, SIZE (Data));
  155.   Kernel.Allocate (AnimClockData, SIZE (Data2), {e.chip});
  156.   SYS.MOVE (SYS.ADR (AnimClockDataStr), AnimClockData, SIZE (Data2));
  157. END InitData;
  158.  
  159. (*------------------------------------*)
  160.  
  161. PROCEDURE Normal* (win: I.WindowPtr);
  162. BEGIN
  163.   IF I.int.libNode.version >= 39 THEN
  164.     I.SetWindowPointer(win,u.done);
  165.   ELSE
  166.     I.ClearPointer(win);
  167.   END;
  168. END Normal;
  169.  
  170. PROCEDURE Busy* (win: I.WindowPtr);
  171. BEGIN
  172.   IF I.int.libNode.version >= 39 THEN
  173.     I.SetWindowPointer(win,I.waBusyPointer,I.LTRUE,
  174.                            I.waPointerDelay,I.LTRUE,
  175.                            u.done);
  176.   ELSE
  177.     I.SetPointer(win,ClockData^,16,16,-6,0);
  178.   END;
  179. END Busy;
  180.  
  181. PROCEDURE AnimBusy* (win: I.WindowPtr; num: INTEGER);
  182. BEGIN
  183.   I.SetPointer(win,AnimClockData[num MOD 16],16,16,-6,0);
  184. END AnimBusy;
  185.  
  186. BEGIN InitData
  187. END IntuiPointer.
  188.